/**
 * 给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
 * 请注意 ，必须在不复制数组的情况下原地对数组进行操作。
 */

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var moveZeroes = function(nums) {
    /**
     * 思路：
     * 1. 定义两个指针 i、j 分别指向数组的第一个元素, j 用于记录 0 的位置
     * 2. 遍历数组，如果 nums[i] !== 0，则交换 nums[i]、nums[j] 的值
     *    如果 nums[i] === 0，则 i++
     * 3. 时间复杂度：O(n)，n 为数组的长度
     */
    let j = 0
    for (let i = 0;i < nums.length;i ++) {
        if (nums[i] !== 0) {
            let temp = nums[i]
            nums[i] = nums[j]
            nums[j] = temp
            j++
        }
    }
};